Dynamic carrier switching

ABSTRACT

A rule server detects a condition pertaining to a switch of a user device to a preferred wireless carrier, and sends a message to the user device indicating a switch to the preferred wireless carrier.

RELATED APPLICATIONS

This patent application is a continuation application of U.S. patentapplication Ser. No. 12/708,483, filed Feb. 18, 2010, which is hereinincorporated by reference.

FIELD OF INVENTION

Embodiments of the invention relate to user devices, and moreparticularly to dynamically switching user devices to preferred wirelesscarriers.

BACKGROUND OF THE INVENTION

A large and growing population of users is enjoying entertainmentthrough the consumption of digital media items, such as music, movies,images, electronic books, and so on. The users employ various electronicdevices to consume such media items. Among these electronic devices areelectronic book readers, cellular telephones, personal digitalassistants (PDAs), portable media players, tablet computers, netbooks,and the like. As the quantity of available electronic media contentcontinues to grow, along with increasing proliferation of devices toconsume that media content, providing network connectivity for such userdevices in a cost efficient manner continues to be a priority.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be understood more fully from the detaileddescription given below and from the accompanying drawings of variousembodiments of the invention, which, however, should not be taken tolimit the invention to the specific embodiments, but are for explanationand understanding only.

FIG. 1 is a block diagram of exemplary network architecture in whichembodiments of the invention may operate.

FIG. 2 is a block diagram of one embodiment of a rule creation module.

FIG. 3 is a block diagram of one embodiment of a rule server.

FIG. 4 is a block diagram of one embodiment of a profile switchingmodule.

FIG. 5 is a flow diagram of one embodiment of a method for creatingrules facilitating dynamic switching of user devices to preferredwireless carriers.

FIG. 6 is a flow diagram of one embodiment of a method for facilitatinga dynamic switch of a user device to a preferred wireless carrier.

FIG. 7 is a flow diagram of one embodiment of a method for facilitatinga switch of a user device to a different wireless carrier in response toa change in the location of the user device.

FIG. 8 is a flow diagram of one embodiment of a method for facilitatinga switch of a user device to a different wireless carrier usingpreferences of a user.

FIG. 9 is a flow diagram of one embodiment of a method for dynamicallyswitching a user device to a preferred local carrier at a new locationof the user device.

FIG. 10 is a flow diagram of one embodiment of a method for dynamicallyswitching a user device to a different wireless carrier using a prioritylist maintained by the user device.

FIG. 11 is a block diagram illustrating an exemplary user device.

FIG. 12 is a block diagram illustrating an exemplary server computingsystem such as an item providing system or a communication enablingsystem.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

Methods and systems for dynamically switching user devices to preferredwireless carriers are described. User devices may be any contentrendering devices including, for example, electronic book readers,cellular telephones, personal digital assistants (PDAs), portable mediaplayers, tablet computers, netbooks, and the like.

In one embodiment, a server computer system (“server”) detects acondition triggering a rule that requires or recommends a switch to aspecified wireless carrier. The rule may be based on one or moreperformance characteristics (throughput, signal strength, network load,etc.) of the specified wireless carrier and/or one or more costcharacteristics (billing rate, surcharge, etc.) of the specifiedwireless carrier. In response to the detected condition, the serveridentifies one or more user devices to which the rule is applicable, andsends the message to each of these user devices, requesting orrecommending a switch to the specified wireless carrier. In someembodiments, the server also sends a device profile of the specifiedwireless carrier to the user device. In other embodiments, the userdevices store device profiles of various carriers including the deviceprofile of the specified carrier and therefore do not need to receivethe device profile from the server. In response to the message from theserver, the user device reprograms its modem using the device profile ofthe specified wireless carrier, and establishes a network connectionusing the device profile of the specified wireless carrier. In anotherembodiment, in response to the message from the server, the user devicedetermines whether to follow the recommendation of the server, and ifthis determination is positive, the user device reprograms the modemusing the device profile of the specified wireless carrier, andestablishes a network connection using the device profile of thespecified wireless carrier.

In alternative embodiments, a switch to a different wireless carrier isinitiated by a user device itself. In particular, a user device maycontain a subset of rules that specify conditions for carrier switching.These conditions may include, for example, a change in the user devicelocation, a denial of network access via a current wireless carrier, achange in a performance characteristic, etc.

Accordingly, embodiments of the invention facilitate dynamic switchingof user devices to preferred wireless carriers. Dynamic switchingconsumes only a small amount of time and client resources and does notrequire any user interaction. As a result, the cost associated withnetwork connectivity is significantly reduced, and network accessperformance characteristics are improved.

FIG. 1 is a block diagram of an exemplary network architecture 100 inwhich embodiments of the invention may operate. The network architecture100 may include an item providing system 104 and multiple user devices102 coupled to the item providing system 104 via a network 106.

The user devices 102 are variously configured with differentfunctionality to enable consumption of one or more types of media items.The media items may be any type or format of digital content, including,for example, electronic texts (eBooks, electronic magazines, digitalnewspapers, etc.), digital audio (music, audible books, etc.), digitalvideo (movies, television, short clips, etc.), images (art, photographs,etc.), and multi-media content. The user devices 102 may include anytype of content rendering devices such as electronic book readers,portable digital assistants, mobile phones, laptop computers, portablemedia players, tablet computers, cameras, video cameras, netbooks,notebooks, desktop computers, gaming consoles, DVD players, mediacenters, and the like.

The item providing system 104 downloads items, upgrades, and/or otherinformation to the user devices 102 via the network 106. The itemproviding system 104 also receives various requests, instructions andother data from the user devices 102 via the network 106. The itemproviding system 104 may include one or more machines (one or moreserver computer systems, routers, gateways, etc.) that have processingand storage capabilities to provide the above functionality.

In the illustrated implementation, communication between the itemproviding system 104 and the user device 102 is enabled via acommunication infrastructure that includes a combination of a wide areanetwork (WAN) 106 and wireless infrastructure, which allows a user touse the user device 102 to purchase items and consume items withoutbeing tethered to the item providing system 104 via hardwired links. Thewireless infrastructure is provided by a wireless carrier system 114that can be implemented using various data processing equipment,communication towers, etc. Alternatively, or in addition, the wirelesscarrier system 114 may rely on WiFi or satellite technology to exchangeinformation with the user device 102.

The communication infrastructure also includes a communication-enablingsystem 108 that serves as an intermediary in passing information betweenthe item providing system 104 and the wireless carrier. Thecommunication-enabling system 108 may communicate with the wirelesscarrier system 114 via a dedicated channel, and may communicate with theitem providing system 104 via a non-dedicated communication mechanism,e.g., a public network such as the Internet. By virtue of thisintermediary role, the communication enabling system 108 may be referredto as a Mobile Virtual Network Enabler (MVNE), while the item providingsystem 104 may be referred to as a Mobile Virtual Network Operator(MVNO).

The item providing system 104 may pay the wireless carrier a fee basedon the aggregate use of the wireless carrier system 114 by all of theuser devices 102. The item providing system 104 may recoup these coststhrough fees charged to the end-users separately or as part of otherpurchases (e.g., purchase of digital content) made by the end-users.Alternatively, the wireless carrier may submit bills directly toindividual users, or may submits bills to either the item providingsystem 104 (in aggregate) or to the individual users, at the option ofthe individual respective users.

A user device 102 may be associated with a specific wireless carrier bymeans of subscriber identity module (SIM) data that may be stored on aphysical SIM card or included in a SIM profile. The SIM data includesinformation identifying the user device to the specific wirelesscarrier. This information may include a unique international mobilesubscriber identity (IMSI) containing a mobile country code (MCC), amobile network code (MNC) and a mobile station identification number(MSIN) within the wireless carrier's customer base. The SIM data mayalso include security authentication and ciphering information,temporary information related to the local network, a list of theservices the user has access to, etc. In addition to the association viaSIM data, a wireless modem of a user device may be pre-configured with amodem profile that defines network connection parameters for a relevantwireless carrier.

Depending on the location of the user device 102, the wireless carrierthat the user device 102 is associated with may not be a preferredcarrier in terms of existing contracts with the item providing system104 or the end-user, billing rates and/or provided performancecharacteristics (coverage, signal strength, speed network load, etc.).Hence, the device's network usage can result in increased costs (e.g.,roaming charges or higher billing rates) and/or undesirable performance.

Embodiments of the invention overcome the above shortcomings bysupporting dynamic switching of user devices to preferred wirelesscarriers. The modem of the user device is programmed with a SIM profilethat includes settings of a currently-used wireless carrier such as theIMSI, security authentication and ciphering information, etc. When aswitch to a preferred wireless carrier is triggered, the modem isautomatically re-programmed with the SIM profile of the preferredwireless carrier. In addition, in some embodiments, the modem is alsoreconfigured with a modem profile that defines connection parameters forthe preferred wireless carrier, such as a GSM frequency band parameter,the format for presenting the wireless carrier name on the user device,etc.

A switch to a preferred wireless carrier may be initiated upon detectinga condition that triggers a rule or detecting a parameter that exceeds athreshold. Various rules and/or thresholds may be maintained based oncost and performance characteristics pertaining to different wirelesscarriers. The cost characteristics may include, for example, billingrates, surcharges, initial fees and other charges of a wireless carrier.The performance characteristics may include, for example, availabilityof coverage, throughput, signal strength, network load, etc.

In some embodiments, the item providing system 104 hosts a rule creationmodule 116 that collects the above characteristics and creates rulesand/or thresholds based on these characteristics. A rule may request auser device 102 to perform a switch, or a rule may provide arecommendation (suggestion or guideline) with respect to a switch and auser device 102 may further decide whether to follow the recommendationor not. For example, a rule may require/recommend a switch from carrier1 to carrier 2 if the current billing rate of carrier 1 exceeds thecurrent billing rate of carrier 2 by at least X amount. In anotherexample, a rule may require/recommend a switch from carrier 1 to carrier2 if the signal strength of carrier 2 exceeds the signal strength ofcarrier 1 by Y dBm. In yet another example, a rule may require/recommenda switch from carrier 1 to carrier 2 if the current billing rate ofcarrier 1 exceeds the current billing rate of carrier 2 by at least Xamount, and the signal strength of carrier 1 does not exceed the signalstrength of carrier 2 by more than Y dBm.

The rules and/or thresholds created by the rule creation module 116 canbe enforced by a rule server 110 that is hosted by the communicationenabling system 106. In alternative embodiments, the rule server 110 canbe hosted by the item providing system 104 or by any other systemcapable of communicating with the user devices 102. The rule server 110detects conditions that trigger the above rules and/or cause the abovethresholds to be exceeded. The conditions may include, for example, achange in a fee charged by a wireless carrier, a change in a location ofa user device, a change in a performance characteristic of a network ofa wireless carrier, a change in a contractual agreement between the itemproviding system 104 and a wireless carrier, etc.

When a rule is triggered (or a threshold is exceeded), the rule server110 identifies user devices 102 to which the rule or threshold isapplicable, and sends a message to the identified user devicesrequesting them to switch to an alternative wireless carrier. In oneembodiment, the rule server 110 also sends a device profile of thealternative wireless carrier to the user device. In another embodiment,the rule server 110 sends an identifier of the alternative wirelesscarrier to the user device, and the user device obtains the deviceprofile from its local memory.

Upon receiving a request to switch from the rule server 110, the userdevice 102 performs the requested switch. If the message of the ruleserver 110 indicates a recommendation to switch (as opposed to a requestto switch), the user device 102 may or may not perform the recommendedswitch depending on further evaluation of local conditions, userpreferences or other local data. In one embodiment, the user device 102includes a profile switching module 118 that obtains a device profile ofthe alternative wireless carrier and reprograms the modem using theobtained device profile to enable the user device 102 to connect to thenetwork via the alternative wireless carrier. In some embodiments, theprofile switching module 118 maintains a subset of rules and initiatescarrier switching of the user device 102 when any rule form the subsetis triggered, without waiting for a request from the rule server 110.The actual switch to the alternative wireless carrier may not occurduring a current session but rather after the current session iscompleted, making it transparent to the user.

In one embodiment, the communication enabling system 108 includes anauthentication server 112 that performs security-related functions. Inparticular, the authentication server 112 ensures that the user device102 currently attempting to interact with the item providing system 104is duly authorized to access the item providing system 104. In someembodiments, the authentication server 112 is configured to deny accessto the item providing system 104 for user devices that are connected viaa non-preferred carrier. When a user device 102 receives a messageindicating that it was denied access to the item providing system 104,the user device 102 examines the local subset of rules to identify thenext carrier in a preferred carrier list or asks the rule server toidentify a preferred carrier, and reprograms the modem to enable theswitch to the identified carrier.

FIG. 2 is a block diagram of one embodiment of a rule creation module200. The rule creation module 200 may be the same as the rule creationmodule 116 of FIG. 1 and may include a performance characteristicscollector 202, a cost characteristics collector 204, a server rulegenerator 206, and a client rule generator 208. The components of therule creation module 116 may represent modules that can be combinedtogether or separated into further modules, according to someembodiments.

The performance characteristics collector 202 collects performancecharacteristics of different wireless carriers and stores them in aperformance history data store 210. Performance characteristics of awireless carrier may include, for example, information about networkcoverage at different locations, throughput provided at differentlocations and on different days/times, signal strength provided atdifferent locations and on different days/times, etc. In addition, theperformance characteristics collector 202 may collect performancecharacteristics pertaining to individual user devices and store them ina performance history data store 210. Performance characteristicspertaining to a user device may include, for example, information aboutnetwork usage by the user device, throughput and signal strength duringnetwork usage at typical user locations (e.g., house, work, gym), userpreferences of wireless carriers at typical user locations, etc.

The cost characteristics collector 204 collects cost characteristics ofdifferent wireless carriers and stores them in a cost history data store210. Cost characteristics of a wireless carrier may include, forexample, billing rates charged at different locations and on differentdays/times, discount information, initial fees, surcharges, etc.

The server rule generator 206 creates rules and/or thresholds based onthe collected performance and cost characteristics, and stores thecreated rules in a rules store 214. A rule may, for example, require orrecommend a switch if the billing rate of a current wireless carrier isat least 5 percent higher than the billing rate of another wirelesscarrier providing coverage in the present location. Another rule mayrequire or recommend a switch if a user travels to a new geographicalarea. Yet another rule may require or recommend a switch if a signalstrength or throughput provided by an alternative wireless carrier is atleast 10 percent better than those provided by the current wirelesscarrier. A rule may include multiple conditions using any combination ofperformance characteristics and/or cost characteristics. In addition, arule may be carrier specific and applicable to all user devices (e.g.,“any user device should switch to carrier A when arriving to city X”).Alternatively, a rule may be user device specific (e.g., “user deviceshould switch to carrier A when at home and then switch to carrier Bwhen arriving to the office”). The server rule generator 206 stores thecreated rules and/or thresholds in a rules store 214.

The client rule generator 208 creates rules and/or thresholds forindividual user devices based on the collected performance and costcharacteristics, and stores the created rules and/or thresholds in therules store 214. These rules and/or thresholds may be specific to a userdevice or a group of user devices (user devices of all users working ina certain office of a specific company, all user devices of a specificdevice type (e.g., certain type of electronic book reader), all userdevices supporting a specific network protocol, etc.). For example, arule may require or recommend that a device of any user working from aChicago office of company X switch to carrier A at 12 pm and then switchto carrier B at 4 pm. In another example, a rule may require orrecommend that user device Y switch to carrier A when arriving to theoffice, switch to carrier B when arriving home, and switch to carrier Cwhen arriving to the gym.

The server rule generator 206 and the client rule generator 208periodically update the rules and/or thresholds based on newly collecteddata and send them to the rule server. In addition, in some embodiments,a subset of rules and/or thresholds may be provided to the individualuser devices.

The data stores 210, 212 and 214 may represent a single or multiple datastructures (databases, repositories, files, etc.) residing on one ormore mass storage devices, such as magnetic or optical storage baseddisks, tapes or hard drives.

FIG. 3 is a block diagram of one embodiment of a rule server 300. Therule server 300 may be the same as the rule server 11 of FIG. 1 and mayinclude a rule enforcer 308, a user device interface 308, a rules store302, a device profile store 304, and a message store 310. The componentsof the rule server 300 may represent modules that can be combinedtogether or separated into further modules, according to someembodiments.

The rule store 302 includes rules and/or thresholds created by the rulecreation module 200 based on cost characteristics of different wirelesscarriers and/or based on performance characteristics of differentwireless carriers and user devices. The rules may be carrier specific oruser device specific.

The rule enforcer 306 enforces the rules and/or thresholds stored in therules store 302. In particular, the rule enforcer 306 tracks whatcarriers are currently being used by user devices. For each currentcarrier, the rule enforcer 306 uses the rules and/or thresholdsassociated with this carrier to detect when the usage of this carrier byuser devices becomes undesirable. The rule enforcer 306 then determines,based on relevant rule(s) and/or threshold(s), an alternative carrierthat should be used instead of a current carrier, and identifies userdevices to which these rules and/or thresholds are applicable.

The user device interface 308 is responsible for sending a message tothe identified user devices, requesting or recommending that each ofthese user devices switch to the alternative carrier. In one embodiment,the user device interface 308 also retrieves a device profile associatedwith the alternative carrier from the device profile store 304 and sendsthis device profile to the user devices. The device profile store 304may contain device profiles associated with different wireless carriers.Each device profile includes a SIM profile associated with a specificcarrier, and optionally in some embodiments a modem profile that definenetwork connection parameters for the specific wireless carrier. Inanother embodiment, the user device interface 308 does not send thedevice profile associated with the alternative carrier to the userdevice and the user device retrieves this device profile from a localdevice profile store.

In one embodiment, upon sending a switching message, the user deviceinterface 308 stores the switching message in the message store 310 tokeep track of all the switching messages. The user device interface 308may check the contents of the message store 310 prior to sending aswitching message to a user device to avoid frequent switching of theuser device.

The rule enforcer 306 may also enforce user device specific rules and/orthresholds by monitoring activity associated with a specific user deviceand detecting conditions that trigger one or more rules pertaining tothe specific user device or cause one or more thresholds pertaining tothe specific user device to be exceeded. For example, if a rule requiresor recommends that a user device switch from carrier A to carrier B whena user arrives to work, the rule enforcer 306 may monitor the locationof the user device (e.g., using triangulation or other locationdetection techniques) to detect when the user arrives to work, and theninvoke the user device interface 308 to send a message to the userdevice, requesting or recommending a switch.

The data stores 302, 304 and 306 may represent a single data structure(a repository, a database, etc.) or different data structures residingon one or more mass storage devices, such as magnetic or optical storagebased disks, tapes or hard drives.

FIG. 4 is a block diagram of one embodiment of a profile switchingmodule 400. The profile switching module 400 may be the same as theprofile switching module 118 of FIG. 1 and may include a GPS manager406, a rule selector 408 and a modem reprogrammer 410. The components ofthe profile switching module 400 may represent modules that can becombined together or separated into further modules, according to someembodiments.

The user device hosting the profile switching module 400 has a modemthat is programmed with a SIM profile associated with a specificwireless carrier. The SIM profile may be stored in secure memory (e.g.,one time programmable (OTP) memory) on the modem. In one embodiment, themodem is also configured with a modem profile that defines networkconnection parameters for the specific wireless network. The modemprofile is stored in non-volatile memory on the modem.

When the profile switching module 400 receives a message from the ruleserver to switch to an alternative carrier, the modem reprogrammer 410obtains a device profile of the alternative wireless carrier andreprograms the modem with the obtained device profile. This deviceprofile includes a SIM profile and, in some embodiments, a modem profileof the alternative wireless carrier. The modem reprogrammer 410 canreceive the device profile of the alternative wireless carrier from therule server or retrieve it from a local profile store 404. The profilestore 404 may include SIM profiles and modem profiles of variouswireless carriers and can reside in a secure memory (e.g., secure OTPmemory) on the modem. Optionally, the profiles in the data store 404 canbe encrypted for additional security. If the profile store 404 does notinclude the device profile of the alternative wireless carrier, themodem reprogrammer 410 can request it from the rule server. The actualswitch to the alternative wireless carrier may not occur during acurrent session but rather after the current session is completed,making it transparent to the user.

In some embodiments, when the profile switching module 400 receives amessage from the rule server indicating a switch to an alternativecarrier, the profile switching module 400 may or may not reprogram themodem with a different device profile depending on whether it decides tofollow a recommendation of the rule server or not. This decision may bebased on local conditions (e.g., network coverage at the currentlocation, throughput provided at the current location, signal strengthat the current location), user preferences and other local data.

In some embodiments, the profile switching module 400 initiates carrierswitching itself, without waiting for a switching message from the ruleserver. In these embodiments, the profile switching module 400 mayinclude the rule selector 408 that uses the rules and/or thresholds froma rules store 402 to initiate carrier switching. The rules store 402 mayinclude, for example, location specific rules that require a switch to acertain carrier when the user arrives to a specific location. Changes inthe user device location can be detected by the GPS manager 406 using aGPS technique. Alternatively, changes in the user device location can bedetected using a triangulation technique, MCC and MNC data, etc.

In another example, the rule store 402 may include a rule specifying apreferred carrier list ordered by priority. When the authenticationserver 112 denies access to the item providing system 104 via a currentwireless carrier, the rule selector 408 may select the next carrier inthe preferred carrier list and invoke the modem reprogrammer 410 toperform the carrier switch.

Rules and/or thresholds 402 may be stored in memory on the modem or someother memory of the user device. Rules and/or thresholds 402 can beperiodically updated by receiving data from the item providing system104. For example, the preferred carrier list can be updated on a dailybasis to re-prioritize based on daily rates.

FIG. 5 is a flow diagram of one embodiment of a method 500 for creatingrules facilitating dynamic switching of user devices to alternativewireless carriers. The method is performed by processing logic that maycomprise hardware (circuitry, dedicated logic, etc.), software (such asis run on a general purpose computer system or a dedicated machine), ora combination of both. In one embodiment, embodiments of the method areperformed by an item providing system 104 (e.g., a rule creation module116 hosted by the item providing system 104 of FIG. 1).

Referring to FIG. 5, the rule creation module periodically collectsperformance characteristics per carrier and/or per device (blocks 502).As discussed above, performance characteristics of a wireless carriermay include, for example, information about network coverage atdifferent locations, throughput provided at different locations and ondifferent days/times, signal strength provided at different locationsand on different days/times, etc. Performance characteristics pertainingto a user device may include, for example, information about networkusage by the user device, throughput and signal strength during networkusage at typical user locations (house, work, gym, etc.), userpreferences of wireless carriers at typical user locations, etc.

At block 504, the rule creation module periodically collects costcharacteristics per carrier. Cost characteristics of a wireless carriermay include, for example, billing rates charged at different locationsand on different days/times, discount information, initial fees,surcharges, etc.

At block 506, the rule creation module creates rules and/or thresholdsbased on performance characteristics and/or cost characteristics. A rulemay include one or more conditions using any combination of performancecharacteristics and/or cost characteristics. A rule or threshold may becarrier specific and applicable to all user devices, or a rule orthreshold may be user device specific. The rule creation moduleperiodically updates the rules and/or thresholds based on newlycollected data.

In some embodiments, the rule creation module also creates rules and/orthresholds for switching between different delivery mechanisms ordifferent communication channels within the same wireless network. Forexample, if a wireless carrier has higher billing rates for use of themultimedia messaging service (MMS) than the short message service (SMS)in a certain geographical area, a rule may require or recommend a switchfrom the SMS to the MMS when the user travels to this area.

At block 508, the rule creation module sends rules and/or thresholds tothe rule server. In some embodiments, the rules creation module alsosends to a user device a subset of the rules and/or thresholds that isrelevant to the user device.

FIGS. 6, 7 and 8 are flow diagrams of some embodiments of a method forfacilitating a dynamic switch of a user device to a different wirelesscarrier. The method is performed by processing logic that may comprisehardware (circuitry, dedicated logic, etc.), software (such as is run ona general purpose computer system or a dedicated machine), or acombination of both. In one embodiment, embodiments of the method areperformed by a computer system hosting a rule server (e.g., a ruleserver 110 of FIG. 1).

Referring to FIG. 6, the rule sever receives various carrier switchingrules and/or thresholds from the item providing system and stores themin a rules store. At block 602, the rule server detects a conditiontriggering one of the rules from the rule store or causing one or morethreshold from the rule store to be exceeded. At block 604, the ruleserver identifies one or more user devices to which the rule orthreshold is applicable. For example, if the rule requests or recommendsa switch to carrier A for all devices located in area X, the rule serveridentifies all user devices in area X that are presently using awireless carrier other than carrier A.

At block 606, the rule server sends a message to each identified userdevice to request or recommend a switch to the preferred wirelesscarrier. In one embodiment, the rule server also retrieves a deviceprofile associated with the preferred wireless carrier from a deviceprofile store and sends this device profile to the user devices. Thedevice profile includes a SIM profile associated with the preferredwireless carrier, and optionally in one embodiment a modem profile thatdefine network connection parameters for the preferred wireless carrier.In another embodiment, the rule server sends the identifier of thedevice profile associated with the preferred carrier to the user devicebut not the device profile itself.

At block 608, the rule server stores the switching message in a messagestore. In one embodiment, prior to sending a message to the user device,the rule server determines how many times the user device was requestedor recommended to switch over the last N hours or when the last switchof the user device took place. If the number of switches orrequests/recommendations exceeds a predefined threshold or the lastswitch has occurred (or a request/recommendation was sent) less than apredefined number of hours ago, the rule server does not send aswitching message to the user device.

In one embodiment, several device profiles may be maintained for asingle wireless carrier, each of these device profiles corresponding toa different delivery mechanism or a different communication channelwithin the same wireless network. For example, one device profile maycorrespond to the use of MMS while connecting to a specific wirelessnetwork and another device profile may correspond to the use of SMSwhile connecting to the same wireless network. The rule server canmaintain rules and/or thresholds to initiate or recommend a switch to apreferred delivery mechanism or communication channel when a specificcondition occurs. When the rule server detects a condition triggeringone of the above rules or causing one of the above thresholds to beexceeded, the rule server identifies user devices to which this rule orthreshold applies, and sends these user devices a message, requesting orrecommending that the user devices switch to a preferred deliverymechanism or communication channel. The user devices can then reprogramtheir modems with the device profile associated with the preferreddelivery mechanism or communication channel.

FIG. 7 is a flow diagram of one embodiment of a method 700 forfacilitating a switch of a user device to a different wireless carrierin response to a change in the location of the user device. Method 700begins with the rule server detecting a change in location of a userdevice (block 702). The change in location can be detected usingtriangulation or other location detection techniques.

At block 704, the rule server identifies one or more rules and/orthresholds relevant to the new location of the user device. At block706, the rule server determines whether any identified rule or thresholdnecessitates or recommends a switch to a different wireless carrier. Ifso, the rule server identifies the device profile for the differentwireless carrier (block 708) and sends a switching message and thedevice profile to the user device (block 710). Otherwise, if there areno rules thresholds necessitating or recommending a switch to adifferent wireless carrier, method 700 ends.

FIG. 8 is a flow diagram of one embodiment of a method 800 forfacilitating a switch of a user device to a different wireless carrierusing user device preferences. Method 800 begins with the rule serversending a message to a user device indicating a switch to a differentwireless carrier. At block 804, the rule server receives a response fromthe user device indicating that the switch to the specified wirelesscarrier is undesirable. The reason for such a response may be userpreferences with respect to wireless carriers or performancecharacteristics collected by the user device.

At block 805, the rule server determines whether there are anyoverriding reasons necessitating a switch to the specified wirelesscarrier (e.g., requirements of a service contract between the specifiedwireless carrier and the item providing system, a significant billingrate difference between the current wireless carrier and the newwireless carrier, etc.). If there is an overriding reason to switch tothe new wireless carrier, the rule server sends a message insisting onthe switch to the previously specified wireless carrier (block 810).Otherwise, the rule server further determines whether an alternativewireless carrier is available that satisfies the applicable rule (block806). If so, the method returns to block 802. If not, the rule serversends a message to the user device to continue using the existingwireless carrier (block 808).

FIGS. 9 and 10 are flow diagrams of some embodiments of a client-sidemethod for switching to a different wireless carrier. The method isperformed by processing logic that may comprise hardware (circuitry,dedicated logic, etc.), software (such as is run on a general purposecomputer system or a dedicated machine), or a combination of both. Inone embodiment, embodiments of the method are performed by a user device(e.g., a profile switching module 118 hosted by the user device 102 ofFIG. 1).

Referring to FIG. 9, method 900 begins with detecting that the userdevice has moved to a new location. The change in location can bedetected using GPS hosted by the user device, a triangulation technique,MCC/MNC data, etc.

At block 904, the user device identifies one or more rules applicable tothe new location using a subset of rules stored in local memory. Atblock 906, the user device determines whether any identified ruleindicates a switch to a preferred wireless carrier. If not, method 900ends. If so, the user device determines whether the user device containsa device profile of the preferred wireless carrier (block 908).

If the user device contains the device profile of the preferred wirelesscarrier, the user device reprograms the modem with this device profile(block 910) and establishes a network connection using the deviceprofile of the preferred wireless carrier. In one embodiment, the userdevice power cycles the modem to implement profile changes prior toestablishing the network connection.

If the user device does not contain the device profile of the preferredcarrier, the user device requests this device profile from the ruleserver (block 914), receives this device profile from the rules server(block 916), reprograms the modem with this device profile (block 910),and establishes a network connection using the device profile of thepreferred wireless carrier.

Referring to FIG. 10, method 1000 begins with user device receiving amessage from an authentication server, indicating that the networkaccess via a first wireless carrier is denied. At block 1004, in oneembodiment, the user device identifies the next wireless carrier in apreferred carrier list stored in memory of the user device. In anotherembodiment, the user device sends a request to the rule server toidentify a preferred wireless carrier.

At block 1006, the user device obtains the device profile for theidentified wireless carrier (from local memory or from the rule server).At block 1008, the user device reprograms the modem with the obtaineddevice profile. At block 1010, the user device power cycles the modem toimplement the obtained device profile and connects to the network usingthe obtained device profile.

FIG. 11 is a block diagram illustrating an exemplary user device 1100.The user device 1100 may be the same as user device 102 of FIG. 1 andmay be any type of computing device such as an electronic book reader, aPDA, a mobile phone, a laptop computer, a portable media player, atablet computer, a camera, a video camera, a netbook, a desktopcomputer, a gaming console, a DVD player, a media center, and the like.

The user device 1100 includes one or more processing units 1104, such asone or more CPUs. The user device 1100 also includes system memory 1106,which may correspond to any combination of volatile and/or non-volatilestorage mechanisms. The system memory 1106 may store information whichprovides an operating system component 1108, various program modules1110 including the profile switching module 118, program data 1112,and/or other components. The user device 1100 performs functions byusing the processing unit(s) 1104 to execute the profile switchingmodule 118 and other instructions provided by the system memory 1106.

The user device 1100 may also include a data storage device 1114 thatmay consist of one or more types of removable storage and/or one or moretypes of non-removal storage. The data storage device 1114 may include acomputer-readable medium 1116 on which is stored one or more sets ofinstructions (e.g., instructions of the profile switching module 118)embodying any one or more of the methodologies or functions describedherein. As shown, instructions of the profile switching module 118 mayalso reside, completely or at least partially, within the system memory1106 and/or within the processing unit(s) 1130 during execution thereofby the user device 1100, the system memory 1106 and the processingunit(s) 1130 also constituting computer-readable media. The instructionsof the profile switching module 118 may further be transmitted orreceived over a network.

The user device 1100 may also include one or more input devices 1118(keyboard, mouse device, specialized selection keys, etc.) and one ormore output devices 1120 (displays, printers, audio output mechanisms,etc.). The user device 1100 may further include a wireless modem 1122 toallow the user device 1100 to communicate via a wireless network withother computing devices 1124, such as remote computers, the itemproviding system, and so forth. The wireless modem 1122 may allow theuser device 1100 to receive a telephone ring and also communicate withthe item providing system in a data mode. The wireless modem 1122 mayprovide network connectivity using any type of mobile network technologyincluding, for example, cellular digital packet data (CDPD), generalpacket radio service (GPRS), enhanced data rates for GSM evolution(EDGE), universal mobile telecommunications system (UMTS), 1 times radiotransmission technology (1xRTT), evaluation data optimized (EVDO),high-speed downlink packet access (HSDPA), WiFi, etc.

The above-enumerated list of modules is representative and is notexhaustive of the types of functions performed by the user device 1100.As indicated by the label “Other Device Functionality” 1128, the userdevice 1100 may include additional functions.

FIG. 12 illustrates an exemplary server system 1200, such as an itemproviding system or a communication enabling system, in the form of acomputer system within which a set of instructions, for causing themachine to perform any one or more of the methodologies discussedherein, may be executed. In alternative embodiments, the machine may beconnected (e.g., networked) to other machines in a LAN, an intranet, anextranet, or the Internet. The machine may operate in the capacity of aserver machine in client-server network environment. The machine may bea personal computer (PC), a set-top box (STB), a server, a networkrouter, switch or bridge, or any machine capable of executing a set ofinstructions (sequential or otherwise) that specify actions to be takenby that machine. Further, while only a single machine is illustrated,the term “machine” shall also be taken to include any collection ofmachines that individually or jointly execute a set (or multiple sets)of instructions to perform any one or more of the methodologiesdiscussed herein.

The exemplary computer system 1200 includes a processing system(processor) 1202, a main memory 1204 (e.g., read-only memory (ROM),flash memory, dynamic random access memory (DRAM) such as synchronousDRAM (SDRAM)), a static memory 1206 (e.g., flash memory, static randomaccess memory (SRAM)), and a data storage device 1216, which communicatewith each other via a bus 1206.

Processor 1202 represents one or more general-purpose processing devicessuch as a microprocessor, central processing unit, or the like. Moreparticularly, the processor 1202 may be a complex instruction setcomputing (CISC) microprocessor, reduced instruction set computing(RISC) microprocessor, very long instruction word (VLIW) microprocessor,or a processor implementing other instruction sets or processorsimplementing a combination of instruction sets. The processor 1202 mayalso be one or more special-purpose processing devices such as anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), network processor,or the like. The processor 1202 is configured to execute the rule server110 and/or rule creation module 116 for performing the operations andsteps discussed herein.

The computer system 1200 may further include a network interface device1222. The computer system 1200 also may include a video display unit1210 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)),an alphanumeric input device 1212 (e.g., a keyboard), a cursor controldevice 1214 (e.g., a mouse), and a signal generation device 1220 (e.g.,a speaker).

The data storage device 1216 may include a computer-readable medium 1224on which is stored one or more sets of instructions (instructions ofrule server 110 and/or rule creation module 116) embodying any one ormore of the methodologies or functions described herein. The rule server110 and/or rule creation module 116 may also reside, completely or atleast partially, within the main memory 1204 and/or within the processor1202 during execution thereof by the computer system 1200, the mainmemory 1204 and the processor 1202 also constituting computer-readablemedia. The rule server 110 and/or rule creation module 116 may furtherbe transmitted or received over a network 1220 via the network interfacedevice 1222.

While the computer-readable storage medium 1224 is shown in an exemplaryembodiment to be a single medium, the term “computer-readable storagemedium” should be taken to include a single medium or multiple media(e.g., a centralized or distributed database, and/or associated cachesand servers) that store the one or more sets of instructions. The term“computer-readable storage medium” shall also be taken to include anymedium that is capable of storing, encoding or carrying a set ofinstructions for execution by the machine and that cause the machine toperform any one or more of the methodologies of the present invention.The term “computer-readable storage medium” shall accordingly be takento include, but not be limited to, solid-state memories, optical media,and magnetic media.

In the above description, numerous details are set forth. It will beapparent, however, to one of ordinary skill in the art having thebenefit of this disclosure, that embodiments of the invention may bepracticed without these specific details. In some instances, well-knownstructures and devices are shown in block diagram form, rather than indetail, in order to avoid obscuring the description.

Some portions of the detailed description are presented in terms ofalgorithms and symbolic representations of operations on data bitswithin a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the above discussion, itis appreciated that throughout the description, discussions utilizingterms such as “detecting”, “identifying”, “sending”, “recording” or thelike, refer to the actions and processes of a computer system, orsimilar electronic computing device, that manipulates and transformsdata represented as physical (e.g., electronic) quantities within thecomputer system's registers and memories into other data similarlyrepresented as physical quantities within the computer system memoriesor registers or other such information storage, transmission or displaydevices.

Embodiments of the invention also relate to an apparatus for performingthe operations herein. This apparatus may be specially constructed forthe required purposes, or it may comprise a general purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but not limited to, any type of diskincluding floppy disks, optical disks, CD-ROMs, and magnetic-opticaldisks, read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, or any type of media suitable forstoring electronic instructions.

The algorithms and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general purposesystems may be used with programs in accordance with the teachingsherein, or it may prove convenient to construct a more specializedapparatus to perform the required method steps. The required structurefor a variety of these systems will appear from the description below.In addition, the present invention is not described with reference toany particular programming language. It will be appreciated that avariety of programming languages may be used to implement the teachingsof the invention as described herein.

It is to be understood that the above description is intended to beillustrative, and not restrictive. Many other embodiments will beapparent to those of skill in the art upon reading and understanding theabove description. The scope of the invention should, therefore, bedetermined with reference to the appended claims, along with the fullscope of equivalents to which such claims are entitled.

What is claimed is:
 1. A non-transitory computer readable storage mediumhaving instructions that, when executed by a processing system, causethe processing system to perform operations comprising: detecting, bythe processing system, a condition associated with a switch from acurrent wireless carrier to a specified wireless carrier; identifying,by the processing system, a user device to which the condition applies;and responsive to identifying the user device to which the conditionapplies, performing the following comprising: sending, by the processingsystem, a message to the user device, while the user device is connectedto the current wireless carrier, the message indicating the switch tothe specified wireless carrier; and sending, by the processing system,at least one of a device profile for the specified wireless carrier oran identifier for the device profile, the device profile comprising datadefining a new unique international mobile subscriber identity (IMSI)associated with the specified wireless carrier that will replace acurrent IMSI associated with the current wireless carrier; receiving aresponse of the user device to the message, the response indicating thatthe switch to the specified wireless carrier is undesirable; determiningwhether any rule provides an alternative wireless carrier for switching;when any rule provides the alternative wireless carrier for switching,sending a second message to the user device, the second messageindicating a switch to the alternative wireless carrier; and when norules provide the alternative wireless carrier for switching, sending athird message to the user device, the third message insisting that theswitch to the specified wireless carrier be performed.
 2. Thenon-transitory computer readable storage of claim 1, wherein: the deviceprofile comprises subscriber identity module (SIM) data that defines thenew unique IMSI, the new unique IMSI comprising a mobile country code(MCC), a mobile network code (MNC) and a mobile station identificationnumber (MSIN) associated with the specified wireless carrier; and theSIM data further defines settings for the specified wireless carrier,the settings comprising at least one of security authenticationinformation, ciphering information or a list of services.
 3. Thenon-transitory computer readable storage medium of claim 2, wherein thedevice profile further comprises a modem profile that defines connectionparameters for the specified wireless carrier, the connection parameterscomprising at least one of a frequency band or a format for presenting aname of the specified wireless carrier on the user device.
 4. Thenon-transitory computer readable storage medium of claim 1, wherein thecondition is defined by a rule that is based on at least one of aperformance characteristic of the specified wireless carrier or a costcharacteristic of the specified wireless carrier.
 5. The non-transitorycomputer readable storage medium of claim 1, wherein detecting thecondition associated with a switch to the specified wireless carriercomprises: detecting a change in a location of the user device;identifying one or more rules applicable to a new location of the userdevice; and determining that one of the identified rules indicates theswitch to the specified wireless carrier.
 6. A non-transitory computerreadable storage medium including instructions that, when executed by aprocessing unit of a user device, cause the processing unit to performoperations comprising: receiving, by the processing unit, while the userdevice is connected to a first wireless carrier, a message comprising anindication that a switch of the user device from the first wirelesscarrier to a second wireless carrier is to be performed; sending, by theprocessing unit, a response to the message, the response indicating thatthe switch to the second wireless carrier is undesirable; in response tothe sending the response to the message, receiving, by the processingunit, a second message indicating a switch to an alternative wirelesscarrier when a rule provides the alternative wireless carrier forswitching; and receiving, by the processing unit, a third messageinsisting that the switch to the second wireless carrier be performedwhen no rules provide the alternative wireless carrier for switching;when no rules provide the alternative wireless carrier for switching,obtaining, by the processing unit, a device profile associated with thesecond wireless carrier, the device profile comprising data defining anew unique international mobile subscriber identity (IMSI) associatedwith the second wireless carrier that will replace a current IMSIassociated with the first wireless carrier; reprogramming a modem of theuser device using the device profile associated with the second wirelesscarrier, wherein the reprogramming causes the user device to switch fromthe first wireless carrier to the second wireless carrier; andestablishing a network connection for the user device using the deviceprofile associated with the second wireless carrier.
 7. Thenon-transitory computer readable storage medium of claim 6, wherein: thedevice profile comprises subscriber identity module (SIM) data thatdefines the new unique IMSI, the new unique IMSI comprising a mobilecountry code (MCC), a mobile network code (MNC) and a mobile stationidentification number (MSIN) associated with the second wirelesscarrier; and the SIM data further defines settings for the secondwireless carrier, the settings comprising at least one of securityauthentication information, ciphering information or a list of services.8. The non-transitory computer readable storage medium of claim 7,wherein the device profile further comprises a modem profile thatdefines connection parameters for the second wireless carrier, theconnection parameters comprising at least one of a frequency band or aformat for presenting a name of the second wireless carrier on the userdevice.
 9. The non-transitory computer readable storage medium of claim6, wherein obtaining the device profile associated with the secondwireless carrier comprises at least one of a) receiving the deviceprofile associated with the second wireless carrier from a server or b)retrieving the device profile associated with the second wirelesscarrier from secure memory.
 10. The non-transitory computer readablestorage medium of claim 6, wherein the receiving comprises receiving theindication in response to a condition associated with the switch fromthe first wireless carrier to the second wireless carrier, wherein thecondition is any one of a change in a location of the user device, amessage indicating that the user device is denied network access via thefirst wireless carrier or a change in a network access performancecharacteristic.
 11. The non-transitory computer readable storage mediumof claim 6, wherein receiving the indication that the switch of the userdevice from the first wireless carrier to the second wireless carrier isto be performed comprises at least one of a) detecting that a conditionpertaining to the switch of the user device from the first wirelesscarrier to the second wireless carrier has been satisfied or b)receiving a command to perform the switch from the first wirelesscarrier to the second wireless carrier.
 12. A user device comprising: awireless modem; and a processing unit coupled to the wireless modem, theprocessing unit to: receive, while the user device is connected to afirst wireless carrier, a message comprising an indication that a switchof the user device from the first wireless carrier to a second wirelesscarrier is to be performed; send a response to the message, the responseindicating that the switch to the second wireless carrier isundesirable; in response to the sending the response to the message,receive a second message indicating a switch to an alternative wirelesscarrier when a rule provides the alternative wireless carrier forswitching; and receive a third message insisting that the switch to thesecond wireless carrier be performed when no rules provide thealternative wireless carrier for switching; when no rules provide thealternative wireless carrier for switching, obtain a device profileassociated with the second wireless carrier, the device profilecomprising data defining a new unique international mobile subscriberidentity (IMSI) associated with the second wireless carrier that willreplace a current IMSI associated with the first wireless carrier;reprogram the wireless modem using the device profile associated withthe second wireless carrier, wherein the reprogramming causes the userdevice to switch from the first wireless carrier to the second wirelesscarrier; and establish a network connection for the user device usingthe device profile associated with the second wireless carrier.
 13. Theuser device of claim 12, wherein the user device is an electronic bookreader.
 14. The user device of claim 12, wherein the device profilecomprises subscriber identity module (SIM) data that defines the newunique IMSI, the new unique IMSI comprising a mobile country code (MCC),a mobile network code (MNC) and a mobile station identification number(MSIN) associated with the second wireless carrier.
 15. The user deviceof claim 14, wherein the SIM data further defines settings for thesecond wireless carrier, the settings comprising at least one ofsecurity authentication information, ciphering information or a list ofservices.
 16. The user device of claim 14, wherein the device profilefurther comprises a modem profile that defines connection parameters forthe second wireless carrier, the connection parameters comprising atleast one of a frequency band or a format for presenting a name of thesecond wireless carrier on the user device.
 17. The user device of claim12, wherein obtaining the device profile associated with the secondwireless carrier comprises at least one of a) receiving the deviceprofile associated with the second wireless carrier from a server or b)retrieving the device profile associated with the second wirelesscarrier from secure memory on the modem.
 18. The user device of claim12, wherein the indication is received in response to a conditionassociated with the switch from the first wireless carrier to the secondwireless carrier, wherein the condition is any one of a change in alocation of the user device, a message indicating that the user deviceis denied network access via the first wireless carrier, and a change ina network access performance characteristic.
 19. The user device ofclaim 12, wherein receiving the indication that the switch of the userdevice from the first wireless carrier to the second wireless carrier isto be performed comprises at least one of a) detecting that a conditionpertaining to the switch of the user device from the first wirelesscarrier to the second wireless carrier has been satisfied or b)receiving a command to perform the switch from the first wirelesscarrier to the second wireless carrier.